#if !defined(_APP_BUFFER_H)
#define _APP_BUFFER_H

#include <pthread.h>

// 定义缓存的结构体
typedef struct
{
    char *data; // 缓存数据指针
    int total_size; // 总大小
    int len; // 已存数据的长度
    int offset; // 起始偏移量
    pthread_mutex_t lock; // 互斥锁
} Buffer;


/**
 * @brief 初始化缓存
 * @param size 缓存大小
 * @return Buffer* 缓存指针
 */
Buffer *app_buffer_init(int size);

/**
 * @brief 释放缓存
 * @param buffer 缓存指针
 * @return void
 */
void app_buffer_free(Buffer *buffer);

/**
 * @brief 向缓存中写数据
 * @param buffer 缓存指针
 * @param data 数据指针
 * @param len 数据长度
 * @return int 0: 成功，-1: 失败（剩余空间不够了）
 */
int app_buffer_write(Buffer *buffer, void *data, int len);

/**
 * @brief 从缓存中读数据
 * @param buffer 缓存指针
 * @param data 存储读的数据容器的指针
 * @param len 要读取数据的长度
 * @return int 0: 成功，-1: 失败（剩余数据不够了）
 */
int app_buffer_read(Buffer *buffer, void *data, int len);


#endif // _APP_BUFFER_H
